home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / tkern10.zip / INCLUDE\SYS\WAIT.H < prev    next >
Text File  |  1994-05-14  |  2KB  |  79 lines

  1. /*
  2.  *  This file forms part of "TKERN" - "Troy's Kernel for Windows".
  3.  *
  4.  *  Copyright (C) 1994  Troy Rollo <troy@cbme.unsw.EDU.AU>
  5.  *
  6.  *  This library is free software; you can redistribute it and/or
  7.  *  modify it under the terms of the GNU Library General Public
  8.  *  License as published by the Free Software Foundation; either
  9.  *  version 2 of the License, or (at your option) any later version.
  10.  *
  11.  *  This library is distributed in the hope that it will be useful,
  12.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  *  Library General Public License for more details.
  15.  *
  16.  *  You should have received a copy of the GNU Library General Public
  17.  *  License along with this library; if not, write to the Free
  18.  *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  */
  20.  
  21. #ifndef __TKWAIT_H
  22. #define __TKWAIT_H
  23.  
  24. #ifndef __TKPROTO
  25. #include <sys/tkproto.h>
  26. #endif
  27.  
  28. union    wait
  29. {
  30.     long    w_status;
  31.     struct
  32.     {
  33.         unsigned short    w_pad0;
  34.         unsigned short    w_Retcode : 8;
  35.         unsigned short    w_Coredump : 1;
  36.         unsigned short    w_Termsig : 7;
  37.     } w_T;
  38.  
  39.     struct
  40.     {
  41.         unsigned short w_pad1 : 8;
  42.         unsigned short w_Stopevent : 8;
  43.         unsigned short w_Stopsig : 8;
  44.         unsigned short w_Stopval : 8;
  45.     } w_S;
  46. };
  47.  
  48. #define    w_termsig    w_T.w_Termsig
  49. #define    w_coredump    w_T.w_Coredump
  50. #define    w_retcode    w_T.w_Retcode
  51. #define    w_stopval    w_S.w_Stopval
  52. #define    w_stopsig    w_S.w_Stopsig
  53. #define    w_stopevent    w_S.w_Stopevent
  54.  
  55. #define    WSTOPPED    0177
  56.  
  57. /* Caller may have status allocated as an integer if using Posix waitpid function. */
  58. #define    WIFSTOPPED(x)    (((union wait *)&(x))->w_stopval == WSTOPPED)
  59. #define    WIFSIGNALED(x)    (((union wait *)&(x))->w_stopval != WSTOPPED && ((union wait *)&(x))->w_termsig != 0)
  60. #define    WIFEXITED(x)    (((union wait *)&(x))->w_stopval != WSTOPPED && ((union wait *)&(x))->w_termsig == 0)
  61.  
  62. #define    WSTOPSIG(x)    (((union wait *)&(x))->w_stopsig)
  63. #define    WTERMSIG(x)    (((union wait *)&(x))->w_termsig)
  64. #define    WEXITSTATUS(x)    (((union wait *)&(x))->w_retcode)
  65.  
  66. struct    rusage
  67. {
  68.     int    ru_dummy;
  69. };
  70.  
  71. extern    short    wait __TKPROTO((union wait *));
  72. extern    short    wait3 __TKPROTO((union wait *, int, struct rusage *));
  73. extern    short    waitpid __TKPROTO((int, long *, int));
  74.  
  75. #define    WNOHANG        1
  76. #define    WUNTRACED    2
  77.  
  78. #endif
  79.